<?php

namespace Gds\AchatBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
 * Gds\AchatBundle\Entity\Fournisseur
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="Gds\AchatBundle\Entity\FournisseurRepository")
 */
class Fournisseur {

    /**
     * @ORM\OneToMany(targetEntity="Gds\AchatBundle\Entity\CompteBancaire", mappedBy="fournisseur")
     */
    private $comptes; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\OneToMany(targetEntity="Gds\AchatBundle\Entity\BonLivraisonFournisseur", mappedBy="fournisseur")
     */
    private $bon_livraisons; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\OneToMany(targetEntity="Gds\AchatBundle\Entity\FactureFournisseur", mappedBy="fournisseur")
     */
    private $factures; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @ORM\OneToMany(targetEntity="Gds\AchatBundle\Entity\ReglementFournisseur", mappedBy="fournisseur")
     */
    private $reglements;

    /**
     * @ORM\OneToMany(targetEntity="Gds\AchatBundle\Entity\BonCommandeFournisseur", mappedBy="fournisseur", cascade={"remove", "persist"})
     */
    private $bon_commandes; // Ici commentaires prend un "s", car un article a plusieurs commentaires !

    /**
     * @ORM\ManyToMany(targetEntity="Gds\ArticleBundle\Entity\Departement", mappedBy="fournisseurs")
     */
    private $departements;

     /**
     * @ORM\OneToMany(targetEntity="Gds\AchatBundle\Entity\CategorieRemiseFournisseur", mappedBy="fournisseur", cascade={"remove", "persist"})
     */
    private $categorieRemises; // Ici commentaires prend un "s", car un article a plusieurs commentaires !
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string $raison_social
     *
     * @ORM\Column(name="raison_social", type="string", length=255)
     */
    private $raison_social;

    /**
     * @var string $forme_juridique
     *
     * @ORM\Column(name="forme_juridique", type="string", length=255)
     */
    private $forme_juridique;

    /**
     * @var string $tel
     *
     * @ORM\Column(name="tel", type="string", length=255)
     */
    private $tel;

    /**
     * @var string $fax
     *
     * @ORM\Column(name="fax", type="string", length=255)
     */
    private $fax;

    /**
     * @var string $adresse
     *
     * @ORM\Column(name="adresse", type="string", length=255)
     */
    private $adresse;

    /**
     * @var string $matricule_fiscale
     *
     * @ORM\Column(name="matricule_fiscale", type="string", length=255)
     */
    private $matricule_fiscale;

    /**
     * @var string $numero_exonoration
     *
     * @ORM\Column(name="numero_exonoration", type="string", length=255)
     */
    private $numero_exonoration;

    /**
     * @var string $code
     *
     * @ORM\Column(name="code", type="string", length=255)
     */
    private $code;

    /**
     * @var float $solde
     *
     * @ORM\Column(name="solde", type="decimal", scale=3)
     */
    private $solde;

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId() {
        return $this->id;
    }

    /**
     * Set raison_social
     *
     * @param string $raisonSocial
     * @return Fournisseur
     */
    public function setRaisonSocial($raisonSocial) {
        $this->raison_social = $raisonSocial;

        return $this;
    }

    /**
     * Get raison_social
     *
     * @return string 
     */
    public function getRaisonSocial() {
        return $this->raison_social;
    }

    /**
     * Set tel
     *
     * @param string $tel
     * @return Fournisseur
     */
    public function setTel($tel) {
        $this->tel = $tel;

        return $this;
    }

    /**
     * Get tel
     *
     * @return string 
     */
    public function getTel() {
        return $this->tel;
    }

    /**
     * Set fax
     *
     * @param string $fax
     * @return Fournisseur
     */
    public function setFax($fax) {
        $this->fax = $fax;

        return $this;
    }

    /**
     * Get fax
     *
     * @return string 
     */
    public function getFax() {
        return $this->fax;
    }

    /**
     * Set adresse
     *
     * @param string $adresse
     * @return Fournisseur
     */
    public function setAdresse($adresse) {
        $this->adresse = $adresse;

        return $this;
    }

    /**
     * Get adresse
     *
     * @return string 
     */
    public function getAdresse() {
        return $this->adresse;
    }

    /**
     * Set matricule_fiscale
     *
     * @param string $matriculeFiscale
     * @return Fournisseur
     */
    public function setMatriculeFiscale($matriculeFiscale) {
        $this->matricule_fiscale = $matriculeFiscale;

        return $this;
    }

    /**
     * Get matricule_fiscale
     *
     * @return string 
     */
    public function getMatriculeFiscale() {
        return $this->matricule_fiscale;
    }

    /**
     * Set numero_exonoration
     *
     * @param string $numeroExonoration
     * @return Fournisseur
     */
    public function setNumeroExonoration($numeroExonoration) {
        $this->numero_exonoration = $numeroExonoration;

        return $this;
    }

    /**
     * Get numero_exonoration
     *
     * @return string 
     */
    public function getNumeroExonoration() {
        return $this->numero_exonoration;
    }

    /**
     * Set code
     *
     * @param string $code
     * @return Fournisseur
     */
    public function setCode($code) {
        $this->code = $code;

        return $this;
    }

    /**
     * Get code
     *
     * @return string 
     */
    public function getCode() {
        return $this->code;
    }

    /**
     * Set solde
     *
     * @param float $solde
     * @return Fournisseur
     */
    public function setSolde($solde) {
        $this->solde = $solde;

        return $this;
    }

    /**
     * Get solde
     *
     * @return float 
     */
    public function getSolde() {
        return $this->solde;
    }

    /**
     * Constructor
     */
    public function __construct() {
        $this->comptes = new \Doctrine\Common\Collections\ArrayCollection();
    }

    /**
     * Add comptes
     *
     * @param Gds\AchatBundle\Entity\CompteBancaire $comptes
     * @return Fournisseur
     */
    public function addCompte(\Gds\AchatBundle\Entity\CompteBancaire $comptes) {
        $this->comptes[] = $comptes;

        return $this;
    }

    /**
     * Remove comptes
     *
     * @param Gds\AchatBundle\Entity\CompteBancaire $comptes
     */
    public function removeCompte(\Gds\AchatBundle\Entity\CompteBancaire $comptes) {
        $this->comptes->removeElement($comptes);
    }

    /**
     * Get comptes
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getComptes() {
        return $this->comptes;
    }

    /**
     * Add bon_livraisons
     *
     * @param Gds\AchatBundle\Entity\BonLivraisonFournisseur $bonLivraisons
     * @return Fournisseur
     */
    public function addBonLivraison(\Gds\AchatBundle\Entity\BonLivraisonFournisseur $bonLivraisons) {
        $this->bon_livraisons[] = $bonLivraisons;

        return $this;
    }

    /**
     * Remove bon_livraisons
     *
     * @param Gds\AchatBundle\Entity\BonLivraisonFournisseur $bonLivraisons
     */
    public function removeBonLivraison(\Gds\AchatBundle\Entity\BonLivraisonFournisseur $bonLivraisons) {
        $this->bon_livraisons->removeElement($bonLivraisons);
    }

    /**
     * Get bon_livraisons
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getBonLivraisons() {
        return $this->bon_livraisons;
    }

    /**
     * Add factures
     *
     * @param Gds\AchatBundle\Entity\FactureFournisseur $factures
     * @return Fournisseur
     */
    public function addFacture(\Gds\AchatBundle\Entity\FactureFournisseur $factures) {
        $this->factures[] = $factures;

        return $this;
    }

    /**
     * Remove factures
     *
     * @param Gds\AchatBundle\Entity\FactureFournisseur $factures
     */
    public function removeFacture(\Gds\AchatBundle\Entity\FactureFournisseur $factures) {
        $this->factures->removeElement($factures);
    }

    /**
     * Get factures
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getFactures() {
        return $this->factures;
    }

    /**
     * Set forme_juridique
     *
     * @param string $formeJuridique
     * @return Fournisseur
     */
    public function setFormeJuridique($formeJuridique) {
        $this->forme_juridique = $formeJuridique;

        return $this;
    }

    /**
     * Get forme_juridique
     *
     * @return string 
     */
    public function getFormeJuridique() {
        return $this->forme_juridique;
    }

    /**
     * Add reglements
     *
     * @param \Gds\AchatBundle\Entity\ReglementFournisseur $reglements
     * @return Fournisseur
     */
    public function addReglement(\Gds\AchatBundle\Entity\ReglementFournisseur $reglements) {
        $this->reglements[] = $reglements;

        return $this;
    }

    /**
     * Remove reglements
     *
     * @param \Gds\AchatBundle\Entity\ReglementFournisseur $reglements
     */
    public function removeReglement(\Gds\AchatBundle\Entity\ReglementFournisseur $reglements) {
        $this->reglements->removeElement($reglements);
    }

    /**
     * Get reglements
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getReglements() {
        return $this->reglements;
    }

    /**
     * Add departements
     *
     * @param \Gds\ArticleBundle\Entity\Departement $departements
     * @return Fournisseur
     */
    public function addDepartement(\Gds\ArticleBundle\Entity\Departement $departements) {
        $this->departements[] = $departements;

        return $this;
    }

    /**
     * Remove departements
     *
     * @param \Gds\ArticleBundle\Entity\Departement $departements
     */
    public function removeDepartement(\Gds\ArticleBundle\Entity\Departement $departements) {
        $this->departements->removeElement($departements);
    }

    /**
     * Get departements
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getDepartements() {
        return $this->departements;
    }

    /**
     * Add bon_commandes
     *
     * @param \Gds\AchatBundle\Entity\BonCommandeFournisseur $bonCommandes
     * @return Fournisseur
     */
    public function addBonCommande(\Gds\AchatBundle\Entity\BonCommandeFournisseur $bonCommandes) {
        $this->bon_commandes[] = $bonCommandes;

        return $this;
    }

    /**
     * Remove bon_commandes
     *
     * @param \Gds\AchatBundle\Entity\BonCommandeFournisseur $bonCommandes
     */
    public function removeBonCommande(\Gds\AchatBundle\Entity\BonCommandeFournisseur $bonCommandes) {
        $this->bon_commandes->removeElement($bonCommandes);
    }

    /**
     * Get bon_commandes
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getBonCommandes() {
        return $this->bon_commandes;
    }

    public function __toString() {
        return $this->getRaisonSocial();
    }


    /**
     * Add categorieRemises
     *
     * @param \Gds\AchatBundle\Entity\CategorieRemiseFournisseur $categorieRemises
     * @return Fournisseur
     */
    public function addCategorieRemise(\Gds\AchatBundle\Entity\CategorieRemiseFournisseur $categorieRemises)
    {
        $this->categorieRemises[] = $categorieRemises;

        return $this;
    }

    /**
     * Remove categorieRemises
     *
     * @param \Gds\AchatBundle\Entity\CategorieRemiseFournisseur $categorieRemises
     */
    public function removeCategorieRemise(\Gds\AchatBundle\Entity\CategorieRemiseFournisseur $categorieRemises)
    {
        $this->categorieRemises->removeElement($categorieRemises);
    }

    /**
     * Get categorieRemises
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getCategorieRemises()
    {
        return $this->categorieRemises;
    }
}
